//题目描述
//形如 2^P−1 的素数称为麦森数，这时 P 一定也是个素数。但反过来不一定，即如果 P 是个素数，2^P−1 不一定也是素数。
//到 1998 年底，人们已找到了 37 个麦森数。最大的一个是 P=3021377，它有 909526 位。麦森数有许多重要应用，它与完全数密切相关。
//
//任务：输入 P(1000<P<3100000)，计算 2^P−1 的位数和最后 500 位数字（用十进制高精度数表示）
//
//输入格式
//文件中只包含一个整数 P(1000<P<3100000)
//
//输出格式
//第一行：十进制高精度数 2^P−1 的位数。
//
//第 2∼11 行：十进制高精度数 2^P−1 的最后 500 位数字。（每行输出 50 位，共输出 10 行，不足 500 位时高位补 0）
//
//不必验证 2^P−1 与 P 是否为素数。
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
vector<int> mul(vector<int> &A, int b)
{
	vector<int> C;
	int t = 0;
	for(size_t i = 0; i < A.size() || t; i++){
		if(i < A.size()) t += A[i] * b;
		C.push_back(t % 10);
		t /= 10;
		if(C.size() > 500) break;  //超过500位结束
	}
	while(C.back() == 0 && C.size() > 1) C.pop_back();
	return C;
}
vector<int> sub(vector<int> &A, int b)
{
	int t = 0;
	for(size_t i = 0; i < A.size(); i++){
		t = A[i] - t;
		if(i < 1) t -= b;
		A[i] = (t + 10) % 10;
		if(t < 0) t = 1;
		else break;  //借位处理完成后提前退出
	}
	while(A.back() == 0 && A.size() > 1) A.pop_back();
	return A;
}

int main()
{
	long long p;
	cin >> p;
	
	long long n = p * log10(2) + 1;
	cout << n << endl;

	vector<int> A(1, 1);  //初始化为1
	for(;p > 13; p = p -13){
		A = mul(A, 8192); //每次乘2^13
	}
	A = mul(A, pow(2, p));
	//计算2^p - 1
	A = sub(A, 1);

	// 输出低500位（不足补0）
	for(int i = 499; i >= 0; i--) {
		if(static_cast<size_t>(i) < A.size()) cout << A[i];
		else cout << 0;
		if(i % 50 == 0) cout << endl;
	}
	return 0;
}



